/**
 * 专辑分类ID枚举
 */
export enum AlbumGenreId {
    ALL = 0, // 全部
    POP = 1, // 流行
    ROCK = 2, // 摇滚
    FOLK = 3, // 民谣
    ELECTRONIC = 4, // 电子
    HIPHOP = 5, // 嘻哈
    RNB = 6, // R&B
    JAZZ = 7, // 爵士
    CLASSICAL = 8, // 古典
    LIGHT = 9, // 轻音乐
    SOUNDTRACK = 10, // 原声
    COUNTRY = 11, // 乡村
    BLUES = 12, // 蓝调
    METAL = 13, // 金属
    PUNK = 14, // 朋克
    WORLD = 15, // 世界音乐
}

/**
 * 专辑分类ID到名称的映射
 */
export const GENRE_NAME_MAP: Record<AlbumGenreId, string> = {
    [AlbumGenreId.ALL]: "全部",
    [AlbumGenreId.POP]: "流行",
    [AlbumGenreId.ROCK]: "摇滚",
    [AlbumGenreId.FOLK]: "民谣",
    [AlbumGenreId.ELECTRONIC]: "电子",
    [AlbumGenreId.HIPHOP]: "嘻哈",
    [AlbumGenreId.RNB]: "R&B",
    [AlbumGenreId.JAZZ]: "爵士",
    [AlbumGenreId.CLASSICAL]: "古典",
    [AlbumGenreId.LIGHT]: "轻音乐",
    [AlbumGenreId.SOUNDTRACK]: "原声",
    [AlbumGenreId.COUNTRY]: "乡村",
    [AlbumGenreId.BLUES]: "蓝调",
    [AlbumGenreId.METAL]: "金属",
    [AlbumGenreId.PUNK]: "朋克",
    [AlbumGenreId.WORLD]: "世界音乐",
}

/**
 * 专辑分类名称到ID的映射
 */
export const GENRE_ID_MAP: Record<string, AlbumGenreId> = Object.entries(GENRE_NAME_MAP).reduce(
    (acc, [id, name]) => {
        acc[name] = Number(id) as AlbumGenreId
        return acc
    },
    {} as Record<string, AlbumGenreId>,
)

/**
 * 获取专辑分类名称
 */
export function getGenreName(id: AlbumGenreId): string {
    return GENRE_NAME_MAP[id] || GENRE_NAME_MAP[AlbumGenreId.ALL]
}

/**
 * 获取专辑分类ID
 */
export function getGenreId(name: string): AlbumGenreId {
    return GENRE_ID_MAP[name] !== undefined ? GENRE_ID_MAP[name] : AlbumGenreId.ALL
}

/**
 * 所有专辑分类ID数组
 */
export const ALL_GENRE_IDS = Object.values(AlbumGenreId).filter((value) => typeof value === "number") as AlbumGenreId[]

